package com.baoyouqun.service;

import cn.hutool.core.lang.tree.Tree;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baoyouqun.domain.CreateCmd.PermissionCreateCmd;
import com.baoyouqun.domain.Query.PermissionQuery;
import com.baoyouqun.domain.UpdateCmd.PermissionUpdateCmd;
import com.baoyouqun.domain.VO.MenuTreeVO;
import com.baoyouqun.domain.VO.PermissionVO;
import com.baoyouqun.entity.Permission;

import java.util.List;


public interface PermissionService extends IService<Permission> {


    /**
     * 新增并返回实体
     */
    SingleResponse<PermissionVO> create(PermissionCreateCmd cmd);

    Response update(PermissionUpdateCmd cmd);

    /**
     * 根据ID查询VO
     */
    PermissionVO selectById(String id);

    /**
     * 分页查询VO
     */
    IPage<PermissionVO> pageVo(PermissionQuery query);

    List<Tree<String>> getMenuTree();

    List<String> getPermissionList();

    /**
     * 根据用户ID获取权限菜单（树形结构）
     *
     * @param userId 用户ID
     * @return 菜单树形VO
     */
    SingleResponse<MenuTreeVO> getUserPermissionMenu(String userId);

    SingleResponse<MenuTreeVO> getRolePermissionMenu(String roleId);
}